// 进行打包
// const fs = require('fs');
// const path = require('path');
// const execa = require('execa');
import fs from 'fs'
import path from 'path'
import execa from 'execa';



// 1. 获取每个打包文件
const dirs = fs.readdirSync(path.resolve('packages')).filter(dir => {
  if (!fs.statSync(`packages/${dir}`).isDirectory()) {
    return false
  }
  // 并且这个文件夹下有 得有 package.json 文件
  const packagePath = path.resolve(`packages/${dir}/package.json`)
  if (!fs.existsSync(packagePath)) {
    return false
  }
  return true
})



// 2. 进行打包 并行打包
async function runBuild(dirs, itemFn) {
  let result = []
  for (let item of dirs) {
    result.push(itemFn(item))
  }
  return Promise.all(result)
}

/**
 * 进行打包的函数
 * @param {*} target 
 * @returns 
 */
const buildFn = async (target) => {
  console.log('开始打包', target);

  return await execa('rollup', ['-c', '--environment', `TARGET:${target}`, , '--bundleConfigAsCjs'], {
    stdio: 'inherit' // 输出到控制台
  })
}


runBuild(dirs, buildFn).then((dates) => {
  console.log('打包完成');
})



console.log('hello world', dirs);